home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 10 / AACD 10.iso / AACD / Online / SpeakFreely / src / gsm / tst / cod2lin.c next >
C/C++ Source or Header  |  2000-05-18  |  2KB  |  102 lines

  1. /*
  2.  * Copyright 1992 by Jutta Degener and Carsten Bormann, Technische
  3.  * Universitaet Berlin.  See the accompanying file "COPYRIGHT" for
  4.  * details.  THERE IS ABSOLUTELY NO WARRANTY FOR THIS SOFTWARE.
  5.  */
  6.  
  7. /*$Header: /home/kbs/jutta/src/gsm/gsm-1.0/tst/RCS/cod2lin.c,v 1.1 1992/10/28 00:32:06 jutta Exp $*/
  8.  
  9. #include <stdio.h>
  10. #include <assert.h>
  11.  
  12. #include    "gsm.h"
  13. #include    "proto.h"
  14.  
  15. char  * pname;
  16.  
  17. int    debug      = 0;
  18. int    verbosity  = 0;
  19. int    fast       = 0;
  20. int    error      = 0;
  21.  
  22. usage P0()
  23. {
  24.     fprintf(stderr, "Usage: %s [-vF] [files...]\n", pname);
  25.     exit(1);
  26. }
  27.  
  28. void process P2((f, filename), FILE * f, char * filename)
  29. {
  30.     gsm_frame    buf;
  31.     gsm_signal    source[160];
  32.  
  33.     int        cc;
  34.     gsm        r;
  35.  
  36.     (void)memset(source, 0x00, sizeof(source));
  37.  
  38.     if (!(r = gsm_create())) {
  39.         perror("gsm_create");
  40.         error = 1;
  41.         return ;
  42.     }
  43.     gsm_option(r, GSM_OPT_VERBOSE, &verbosity);
  44.     gsm_option(r, GSM_OPT_FAST,   &fast);
  45.     for (;;) {
  46.         cc = fread((char *)source, sizeof(*source), 76, f);
  47.         if (cc == 0) {
  48.             gsm_destroy(r);
  49.             return;
  50.         }
  51.         if (cc != 76) {
  52.             error = 1;
  53.             fprintf(stderr,
  54.                 "%s: %s -- %d trailing bytes ignored\n",
  55.                 pname, filename, cc);
  56.             gsm_destroy(r);
  57.             return;
  58.         }
  59.  
  60.         gsm_implode(r, source, buf);
  61.         gsm_decode(r, buf, source);
  62.  
  63.         if (write(1, source, sizeof(source)) != sizeof(source)) {
  64.             perror("write");
  65.             error = 1;
  66.             gsm_destroy(r);
  67.             return;
  68.         }
  69.     }
  70. }
  71.  
  72. main P2((ac, av), int ac, char ** av)
  73. {
  74.     int         opt;
  75.     extern char   * optarg;
  76.     extern int    optind;
  77.  
  78.     FILE        * f;
  79.  
  80.     if (!(pname = av[0])) pname = "cod2out";
  81.  
  82.     while ((opt = getopt(ac, av, "vF")) != EOF) switch (opt) {
  83.     case 'v': verbosity++;       break;
  84.     case 'F': fast++;      break;
  85.     default:  usage();
  86.     }
  87.  
  88.     ac -= optind;
  89.     av += optind;
  90.  
  91.     if (!ac) process(stdin, "*stdin*");
  92.     else for (; *av; av++) {
  93.         if (!(f = fopen(*av, "r"))) perror(*av);
  94.         else {
  95.             process(f, *av);
  96.             fclose(f);
  97.         }
  98.     }
  99.  
  100.     exit(error);
  101. }
  102.